package com.shengzai

import scala.util.control.Breaks.break

object Code04Control {
  def main(args: Array[String]): Unit = {
    //1.循环
    //1.1 for循环
    for (i <- Range(0,10)){
      println(i) //0 1 2 3 4 5 6 7 8 9
    }

    // 1.2 普通方式
    val ints:Array[Int] = Array[Int](1, 2, 3, 4, 5)
    for(em <- ints){
      println(em) // 1 2 3 4 5
    }

    // scala中不支持forI的形式

    //1.3 to方式

    for(i<-0 to 10){
      println(i) // 0 1 2 3 4 5 6 7 8 9 10 输出[0,10]
    }

    //1.4 until方式
    for (i<-0 until 10){
      println(i) // 0 1 2 3 4 5 6 7 8 9 输出[0,10)左闭右开
    }

    // 1.5 循环守卫
    // 格式 for( 元素 <- 集合 if 判断 )
    for (elem <- 1 to 10 if elem % 2 == 0) {
      println(s"to if elem:${elem}")
    }

    // 1.6循环步长
    // 通过by设置步长，逻辑为 先取集合中的第一个值，然后再加上步长，如果步长在范围内，那么执行for循环内的代码，如果不在，那么跳出循环
    for (elem <- 1 to 10 by (2)) {
      println(s"to by elem:${elem}")
    }
    var age:Int = 19
    if (age>=18){
      println(s"$age 岁成年了")
    } else if (age>1 && age<18){
      println(s"$age 岁没成年")
    } else {
      println("输出错误")
    }

    var flag: Int = 10
      println("while正在循环")
      if (flag <= 0) {
        // 在Scala中break会抛出异常
        // Exception in thread "main" scala.util.control.BreakControl
        break
      }
      flag -= 1
    }




}
